马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
移位运算
将被转换字符的8个位全部左移一位,最前面一位移到最后(相当于将该整数乘以2,若最高位是1(移位后>256),
则将溢出位1移至最末位,否则用0代替末位)
我们假设用函数F表示这一运算过程。
----字符0x96,二进制为10010110,则F(0x96)=F(10010110)=00101101=0x2D。
 - ;;转入十进制,输入十进制
- (defun F+ (INT / TMP)
- ;;十进制转化为二进制
- (setq TMP (DEG->BIN INT))
- ;;补齐为 8 位
- (while (< (strlen TMP) 8)
- (setq TMP (strcat "0" TMP))
- )
- ;;将首位移动到末位
- (setq TMP (strcat (substr TMP 2 7) (substr TMP 1 1)))
- ;;返回
- (BIN->DEG TMP)
- )
- ;;;二进制转化为十进制
- ;;;例如:(bin->deg "11") 返回 3
- ;;; (deg->bin "101") 返回 5
- (defun BIN->DEG (STR)
- (if (<= (strlen STR) 1)
- (if (= STR "1")
- 1
- 0
- )
- (if (= (substr STR 1 1) "1")
- (+ (expt 2 (- (strlen STR) 1))
- (BIN->DEG (substr STR 2))
- )
- (BIN->DEG (substr STR 2))
- )
- )
- )
|