Skip to content

Instantly share code, notes, and snippets.

@toomasv
Created March 30, 2019 05:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save toomasv/e6f2dbd52d5b65ff652d484caf8b44cf to your computer and use it in GitHub Desktop.
Save toomasv/e6f2dbd52d5b65ff652d484caf8b44cf to your computer and use it in GitHub Desktop.
Study of signed basis
Red [
Author: "Toomas Vooglaid"
Date: 22-Mar-2019
Title: "Compare signed bases"
Purpose: {Introduction to study of signed number basis}
]
context [
set-bits: does [forall bits [pan/pane/(index? bits)/data: make logic! to-integer to-string bits/1]]
set-num: function [hx][
int: to-integer hx
num/data: either all [sig/data int > 127] [
int - 256 ; -1 - to-integer (complement hx)
][int]
]
hexa: charset [#"0" - #"9" #"A" - #"F"]
bit: pan: num: bin: bits: hex: bi: sig: none
hx: #{00000000}
view [
title "Compare bases"
style bit: check 22x25 [
hx: debase/base bin/text: rejoin collect [
foreach-face pan [
keep make integer! face/data
]
] 2
hex/text: enbase/base hx 16
set-num hx
]
sig: check "Sig" 40 [set-num hx]
pan: panel [
origin 0x0
bit "7" bit "6" bit "5" bit "4" bit "3" bit "2" bit "1" bit "0"
] return
text "DEC:" 24
num: field 35 "0" on-enter [
either all [face/data >= -128 face/data <= 255] [
data: case [
face/data < 0 [sig/data: true face/data + 256]
face/data > 127 [sig/data: false face/data]
true [face/data]
]
bin/text: bits: take/last/part enbase/base hx: to-binary data 2 8
hex/text: take/last/part enbase/base hx 16 2
set-bits
][cause-error 'user 'message reduce [rejoin ["Enter integer " -128 ".." 255]]]
]
text "BIN:" 22
bin: field 70 "00000000" on-enter [
either parse face/text [8 [#"1" | #"0"]] [
bits: face/text
hex/text: enbase/base hx: debase/base bits 2 16
data: to-integer hx
set-num hx
set-bits
][cause-error 'user 'message ["Enter 8 bits (1 or 0)"]]
]
text "HEX:" 24
hex: field 25 "00" on-enter [
either parse face/text [2 hexa] [
hx: debase/base face/text 16
bin/text: bits: enbase/base hx 2
set-num hx
set-bits
][cause-error 'user 'message ["Enter hexadecimal 00..FF"]]
]
]
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment