Del*_*ani 6 javascript bit-manipulation
我正在编写一个函数来将带符号的数字扩展到更宽的位长.这是PowerPC指令集中经常使用的操作.这是我到目前为止:
function exts(value, from, to) {
return (value | something_goes_here);
}
Run Code Online (Sandbox Code Playgroud)
value是整数输入,from是value正在使用的位数,to是目标位长度.
创建一个to - from设置为位的数字的最有效方法是什么1,然后将from位设置为0?
忽略JavaScript没有0b数字语法的事实,例如,如果我调用了
exts(0b1010101010, 10, 14)
Run Code Online (Sandbox Code Playgroud)
我希望函数使用OR值0b11110000000000,返回符号扩展结果0b11111010101010.
可以通过生成包含p一位后跟q零位的数字
((1<<p)-1)<<q
Run Code Online (Sandbox Code Playgroud)
因此在你的情况下
((1<<(to-from))-1)<<from
Run Code Online (Sandbox Code Playgroud)
或者更短
(1<<to)-(1<<from)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |